坚持
  • 微信
当前位置:首页 > PYTHON >

文件操作(2)

作者:管理员 时间:2026-07-03 阅读数: 388人阅读

 十、二进制文件的读取和写入

二进制文件的处理流程和文本文件流程一致。首先创建文件对象,不过需要指定二进制模式。创建好二进制文件对象后,仍然可以使用write()、read()实现文件的读写操作。

 

f = open(r"d:\a.txt", 'wb')  #可写的、重写模式的二进制文件对象

f = open(r"d:\a.txt", 'ab')  #可写的、追加模式的二进制文件对象

f = open(r"d:\a.txt", 'rb')  #可读的二进制文件对象

 

示例:读取图片文件,实现文件的拷贝

 

with open('logo1.png', 'rb') as srcFile, open("ddd.png", "wb") as destFile:

    for line in srcFile:

        destFile.write(line)

 

  十一、文件对象的常用属性和方法

  文件对象的属性

属性

说明

name

返回文件的名字

mode

返回文件的打开模式

closed

若文件被关闭,则返回True

 

  文件对象的打开模式

模式

说明

r

读模式

w

写模式

a

追加模式

b

二进制模式(可与其他模式组合)

+

读写模式(可与其他模式组合)

 

  文件对象的常用方法

方法名

说明

read([size])

从文件中读取size个字节或字符的内容返回。若省略size,则读取到文件末尾

readline()

从文本文件中读取一行内容

readlines()

把文本文件中每一行都作为独立的字符串对象,放入列表返回

write(str)

将字符串str内容写入文件

writelines(s)

将字符串列表s写入文件,不添加换行符

seek(offset[,whence])

把文件指针移动到新的位置。whence:0从文件头(默认),1从当前位置,2从文件尾

tell()

返回文件指针的当前位置

truncate([size])

只留下指针前size个字节的内容,其余全部删除

flush()

把缓冲区的内容写入文件,但不关闭文件

close()

把缓冲区内容写入文件,同时关闭文件,释放文件对象相关资源

 

  文件任意位置操作

示例:移动文件指针seek()

 

#e.txt的内容是:abcefghljklmn

with open("e.txt", "r", encoding="utf-8") as f:

    print("文件名是:{0}".format(f.name))   #文件名是:e.txt

    print(f.tell())   #0

    print("读取的内容:{0}".format(str(f.readline())))   #abcdefghijklmn

    print(f.tell())   #14

    f.seek(3, 0)

print("读取的内容:{0}".format(str(f.readline())))   #defghijklmn

 

  十二、使用pickle序列化

序列化指的是:将对象转化成"串行化"数据形式,存储到硬盘或通过网络传输到其他地方。反序列化是指相反的过程,将读取到的"串行化数据"转化成对象。

Python中,一切皆对象,对象本质上就是一个"存储数据的内存块"。有时候,需要将"内存块的数据"保存到硬盘上,或者通过网络传输到其他的计算机上。这时候,就需要"对象的序列化和反序列化"。对象的序列化机制广泛的应用在分布式、并行系统上。

pickle.dump(obj, file):obj是要被序列化的对象,file指的是存储的文件

pickle.load(file):从file读取数据,反序列化成对象

示例:将对象序列化到文件中

 

import pickle

with open("data.dat", "wb") as f:

    name = "高淇"

    age = 34

    score = [90, 80, 70]

    resume = {'name': name, 'age': age, 'score': score}

pickle.dump(resume, f)

 

示例:将获得的数据反序列化成对象

 

import pickle

with open("data.dat", "rb") as f:

    resume = pickle.load(f)

print(resume)

 

  十三、CSV文件的操作

CSV是逗号分隔符文本格式,常用于数据交换、Excel文件和数据库数据的导入和导出。

值没有类型,所有值都是字符串

不能指定字体颜色等样式

不能指定单元格的宽高,不能合并单元格

没有多个工作表

不能嵌入图像图表

Python标准库的模块csv提供了读取和写入csv格式文件的对象。

 

  csv.reader对象和csv文件读取

示例:csv.reader对象从csv文件读取数据

 

import csv

with open(r"d:\a.csv") as a:

    a_csv = csv.reader(a)   #创建csv对象

    headers = next(a_csv)   #获得列表对象,包含标题行的信息

    print(headers)

    for row in a_csv:       #循环打印各行内容

        print(row)

 

 

  csv.writer对象和csv文件写入

示例:csv.writer对象写一个csv文件

 

import csv

 

headers = ["工号", "姓名", "年龄", "地址", "月薪"]

rows = [("1001", "高淇", 18, "西三旗1号院", "50000"),

        ("1002", "高八", 19, "西三旗1号院", "30000")]

 

with open(r"d:\b.csv", "w") as b:

    b_csv = csv.writer(b)       #创建csv对象

    b_csv.writerow(headers)     #写入一行(标题)

b_csv.writerows(rows)       #写入多行(数据)


上一篇:

下一篇: